One of the events in the life cycle of software development is testing, which may extend across the whole development cycle of the software from design, coding, alpha, beta, release, etc. Software testing typically involves devising a test case (or a set of test cases), running the development software with the test case as input, and validating that the performance of the software with the test case as an input yields the expected results. Software testing typically can be conducted manually by humans or programmatically, referred to as automated software testing.
A suite of test cases may include test cases for addressing individual features (e.g., functional testing), a plurality of features or components (e.g., integration testing), one or more different types of interactions with features (e.g., mode of interaction through mouse, keyboard, digitizer, stylus, etc.), and any other type or combination of testing. Writing a test case for each of these features, interactions, input modes, etc., typically requires writing a separate method for executing the test for each feature, and for each feature, a test for each of the input modes, and duplicating the rest of the test script. Executing such test cases imposes a stimulus on the application and helps ensure that the application responds in an expected manner to a specific stimulus, and did not respond in an unexpected manner.